﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.Data.Classes;
using App.UI.Auxiliares;
using CMS.Data.Repositorios;

namespace App.UI
{
    public partial class CadastroClientes : System.Web.UI.Page
    {
        Metodos metodos = new Metodos();

        PessoaRepository PessoaRepository = new PessoaRepository();
        EstadoRepository estadoRepository = new EstadoRepository();
        CidadeRepository cidadeRepository = new CidadeRepository();
        BairroRepository bairroRepository = new BairroRepository();
        RegiaoRepository regiaoRepository = new RegiaoRepository();
        RuaRepository ruaRepository = new RuaRepository();


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
              
                CarregarDropDownList();
              
                if (!String.IsNullOrEmpty(Request.QueryString["PessoaId"]))
                    CarregarPagina();

            }
        }

        private void CarregarDropDownList()
        {
            List<Estado> lstEstado = estadoRepository.SelectAll().ToList();

            ddlEstado.DataSource = lstEstado;
            ddlEstado.DataBind();
            ddlEstado.Items.Insert(0, new ListItem("Selecione um Estado", "0"));

            List<Regiao> lstRegiao = regiaoRepository.SelectAll().ToList();

            ddlRegiao.DataSource = lstRegiao;
            ddlRegiao.DataBind();
            ddlRegiao.Items.Insert(0, new ListItem("Selecione uma Região", "0"));

            ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));
            ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));

        }

        private void CarregarPagina()
        {
            int Id = Request.QueryString["PessoaId"].ToInt();

            Pessoa Pessoa = PessoaRepository.SelectById(Id);

            if (Pessoa != null)
            {
                txtNome.Text = Pessoa.Nome;
              
                if (Pessoa.NomeConjugue == "123-Reserved")
                    txtConjugue.Text = "";
                else
                    txtConjugue.Text = Pessoa.NomeConjugue;
           
                txtEmail.Text = Pessoa.Email;
                txtNCasa.Text = Pessoa.NCasa.ToString();
                txtRG.Text = Pessoa.RG;
                txtCPF.Text = Pessoa.CPF;
                txtTelefone.Text = Pessoa.Telefone;

                ddlEstado.SelectedValue = Pessoa.Rua.Bairro.Cidade.Estado_ID.ToString();
                List<Cidade> lstCidade = cidadeRepository.SelectAll().Where(x => x.Estado_ID == Pessoa.Rua.Bairro.Cidade.Estado.Estado_ID).ToList();

                ddlCidade.DataSource = lstCidade;
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));

                ddlCidade.SelectedValue = Pessoa.Rua.Bairro.Cidade_ID.ToString();
                ddlRegiao.SelectedValue = Pessoa.Rua.Bairro.Regiao_ID.ToString();

                if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
                {
                    List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Regiao_ID == ddlRegiao.SelectedValue.ToInt() && x.Cidade_ID == ddlCidade.SelectedValue.ToInt()).ToList();

                    ddlBairro.DataSource = lstBairro;
                    ddlBairro.DataBind();
                    ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
                }

                ddlBairro.SelectedValue = Pessoa.Rua.Bairro_ID.ToString();

                if (ddlBairro.SelectedIndex != 0)
                {
                    List<Rua> lstRua = ruaRepository.SelectAll().Where(x => x.Bairro_ID == ddlBairro.SelectedValue.ToInt()).ToList();

                    ddlRua.DataSource = lstRua;
                    ddlRua.DataBind();
                    ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));
                }

                ddlRua.SelectedValue = Pessoa.Rua_ID.ToString();
            }
        }

        #region Save Method's

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {

                Pessoa obj = Salvar();

                if (!String.IsNullOrEmpty(Request.QueryString["PessoaId"]))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "SuccessUpdate();", true);
                }
                else
                {
                    LimparCampos();
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "Success();", true);
                }
            }
            catch
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "Failed();", true);
            }
        }

        private Pessoa Salvar()
        {
            if (metodos.ValidarLogin() == null)
                Response.Redirect("Login.aspx");

            Pessoa obj = new Pessoa();

            if (!String.IsNullOrEmpty(Request.QueryString["PessoaId"]))
            {
                int Id = Request.QueryString["PessoaId"].ToInt();

                if (Id > 0)
                    obj = PessoaRepository.SelectById(Id);
            }

          
            obj.Nome = txtNome.Text;
            if (String.IsNullOrEmpty(txtConjugue.Text))
                obj.NomeConjugue = "123-Reserved";
            else
                obj.NomeConjugue = txtConjugue.Text;

            obj.Email = txtEmail.Text;
            obj.NCasa = txtNCasa.Text.ToInt();
            obj.RG = txtRG.Text;
            obj.CPF = txtCPF.Text;
            obj.Telefone = txtTelefone.Text;
            obj.Email = txtEmail.Text;
            obj.Rua_ID = ddlRua.SelectedValue.ToInt();

            PessoaRepository.Save(obj);



            return obj;

        }

        #endregion

        #region PageHelp Method's

        private void LimparCampos()
        {
            txtNome.Text = "";
            txtConjugue.Text = "";
            txtEmail.Text = "";
            txtNCasa.Text = "";
            txtRG.Text = "";
            txtCPF.Text = "";
            txtTelefone.Text = "";
            ddlBairro.SelectedIndex = 0;
            ddlCidade.SelectedIndex = 0;
            ddlEstado.SelectedIndex = 0;
            ddlRegiao.SelectedIndex = 0;
            ddlRua.SelectedIndex = 0;

        }



        
        #endregion

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlEstado.SelectedIndex != 0)
            {
                List<Cidade> lstCidade = cidadeRepository.SelectAll().Where(x => x.Estado_ID == ddlEstado.SelectedValue.ToInt()).ToList();

                ddlCidade.DataSource = lstCidade;
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));
            }
        }

        protected void ddlCidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
            {
                List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Regiao_ID == ddlRegiao.SelectedValue.ToInt() &&  x.Cidade_ID == ddlCidade.SelectedValue.ToInt() ).ToList();

                ddlBairro.DataSource = lstBairro;
                ddlBairro.DataBind();
                ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            }
        }

        protected void ddlRegiao_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
            {
                List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Cidade_ID == ddlCidade.SelectedValue.ToInt() && x.Regiao_ID == ddlRegiao.SelectedValue.ToInt()).ToList();

                ddlBairro.DataSource = lstBairro;
                ddlBairro.DataBind();
                ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            }
        }

        protected void ddlBairro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlBairro.SelectedIndex != 0)
            {
                List<Rua> lstRua = ruaRepository.SelectAll().Where(x => x.Bairro_ID == ddlBairro.SelectedValue.ToInt()).ToList();

                ddlRua.DataSource = lstRua;
                ddlRua.DataBind();
                ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));
            }
        }


    }
}